package com.kapcb.async.callback;

import com.kapcb.async.worker.WorkResult;

/**
 * <a>Title: ICallback </a>
 * <a>Author: Kapcb <a>
 * <a>Description: 每个执行单元执行完毕后，会回调该接口，需要监听执行结果的，实现该接口即可 <a>
 *
 * @author Kapcb
 * @version 1.0
 * @date 2024/5/9 21:36
 * @since 1.0
 */
@FunctionalInterface
public interface ICallback<T, R> {

    /**
     * 任务开始的监听
     */
    default void begin() {
    }

    /**
     * 耗时操作执行完毕后，就给value注入值
     *
     * @param success    任务执行成功
     * @param param      参数
     * @param workResult 任务执行结果
     */
    void result(boolean success, T param, WorkResult<R> workResult);

}
